package handle

import (
	"errors"
	"gitee.com/jinmingzhi/cdce-service/pkg/errs"
	"gitee.com/jinmingzhi/cdce-service/pkg/validator"
	"google.golang.org/grpc/codes"
	"google.golang.org/grpc/status"
)

func handlerErr(err error) error {
	// convert error
	if validator.IsValidationError(err) {
		return status.Errorf(codes.InvalidArgument, "ValidationError:%v", err)
	}

	switch {
	case errors.Is(err, errs.ErrInvalidContext):
		return status.Errorf(codes.Unauthenticated, "InvalidContext:%v", err)
	case errors.Is(err, errs.ErrInvalidToken):
		return status.Errorf(codes.Unauthenticated, err.Error())
	case errors.Is(err, errs.ErrInvalidClaim):
		return status.Errorf(codes.Unauthenticated, err.Error())
	case errors.Is(err, errs.ErrExpired):
		return status.Errorf(codes.Unauthenticated, err.Error())
	default:
		return status.Errorf(codes.Internal, "InternalError:%v", err)
	}
}
